Esta guía es parte del Manual de estilo de Wikipedia en inglés . Se trata de un estándar generalmente aceptado que los editores deben intentar seguir, aunque pueden aplicarse excepciones ocasionales . Cualquier modificación sustancial de esta página debe reflejar el consenso . En caso de duda, debatir primero en la página de discusión . |
Manual de estilo (MoS) |
---|
Este manual contiene algunas sugerencias que tienen como objetivo contribuir a la redacción de artículos informáticos claros, agradables y, con suerte, interesantes . Esta guía es un complemento del Manual de estilo general .
Probablemente la parte más difícil de escribir un artículo técnico sea la dificultad de abordar el nivel de conocimientos técnicos del lector. Un enfoque general es comenzar con algo simple y luego avanzar hacia afirmaciones más formales y técnicas a medida que avanza el artículo. La siguiente estructura es simplemente una recomendación; la discreción editorial y el consenso pueden encontrar una estructura alternativa más apropiada para algunos temas.
El artículo debe comenzar con una sección introductoria de una extensión adecuada al contenido del artículo , que describa el tema en términos generales y resuma adecuadamente el artículo. Este material de apertura debe brindar al lector casual una comprensión rápida del concepto. Nombra el campo o campos de la informática a los que pertenece este concepto y describe el contexto en el que se utiliza el término. Escribe el título del artículo y cualquier nombre alternativo en negrita . Incluye la motivación histórica, proporciona algunos nombres y fechas, etc. A continuación, se incluye un ejemplo:
En informática , la comunicación de procesos secuenciales ( CSP ) es un lenguaje formal para describir patrones de interacción en sistemas concurrentes . Es miembro de la familia de teorías matemáticas de concurrencia conocidas como álgebras de procesos o cálculos de procesos , basadas en el paso de mensajes a través de canales . CSP fue muy influyente en el diseño del lenguaje de programación occam y también influyó en el diseño de lenguajes de programación como Limbo , RaftLib , Erlang , Go , Crystal y core.async de Clojure . CSP fue descrito por primera vez en un artículo de 1978 de Tony Hoare , pero desde entonces ha evolucionado sustancialmente. CSP se ha aplicado prácticamente en la industria como una herramienta para especificar y verificar los aspectos concurrentes de una variedad de sistemas diferentes, como el T9000 Transputer , así como un sistema de comercio electrónico seguro. La teoría de CSP en sí misma también sigue siendo objeto de investigación activa, incluido el trabajo para aumentar su rango de aplicabilidad práctica (por ejemplo, aumentando la escala de los sistemas que se pueden analizar de manera manejable).
Es una buena idea comenzar la parte principal del artículo con una introducción informal, comúnmente titulada "Antecedentes", aunque también se ha utilizado "Descripción general", que le brinda al lector no técnico una comprensión básica de los conceptos fundamentales del tema que se presenta. Si el concepto en cuestión es un tanto teórico, es útil describir su propósito o uso aplicado hacia el comienzo del artículo, ya sea de manera concisa en la sección introductoria o en una sección introductoria posterior. También es útil tener algunos ejemplos representativos , que podrían servir tanto para ampliar el concepto en cuestión como para proporcionar un contexto sobre por qué uno podría querer usar ese concepto.
Una imagen es una excelente manera de transmitir un mensaje y, a menudo, incluso puede preceder a la discusión técnica de un concepto. WP:Cómo crear gráficos para artículos de Wikipedia contiene algunos consejos sobre cómo crear gráficos y otras imágenes, y cómo incluirlos en los artículos.
Si no se incluye en el material introductorio, suele ser útil incluir una sección sobre la historia del concepto, que puede aportar información adicional. Esta sección suele formar su propia sección "Historia".
La informática es un campo amplio que abarca distintos tipos de ideas. La estructura de la parte principal de un artículo variará según el tipo de artículo. A continuación se ofrecen algunas pautas generales para estructurar algunas clases diferentes de artículos sobre informática. Siempre que sea posible, estas pautas incluyen uno o dos ejemplos de un artículo "bueno", es decir , un artículo que demuestre el estilo que buscamos para esa clase particular de artículo. Recuerde siempre que se trata de pautas , no de reglas estrictas: algunos artículos deberán desviarse de esta estructura; algunos artículos serán difíciles de clasificar; algunos no encajarán en estas clasificaciones en absoluto. Utilice el sentido común al aplicar estas pautas.
Un artículo sobre un algoritmo generalmente debe constar de:
Un buen ejemplo es el algoritmo de búsqueda binaria , del que habla un artículo destacado .
Un artículo sobre una estructura de datos debe constar de:
Un artículo que describe un problema clásico generalmente debe constar de:
Un ejemplo es el problema de los filósofos comedores .
La estructura de un artículo que describe un patrón de diseño de software u otro patrón de diseño en informática (incluidos los patrones de creación , los patrones estructurales , los patrones de comportamiento y los patrones de concurrencia ) debe basarse en los modelos de mejores prácticas de la industria proporcionados por fuentes confiables sobre el tema. Algunos de estos incluyen:
Un artículo que describa un campo de estudio dentro de la informática debe incluir:
Un artículo que describa algún tipo de formalismo debe contener:
Un buen ejemplo es el cálculo lambda .
Un artículo que describe una construcción de programación generalmente debe incluir:
Los ejemplos incluyen continuación , cierre (programación informática) y manejo de excepciones .
Un artículo que describe un lenguaje de programación generalmente debe incluir al menos:
Un buen ejemplo es el artículo sobre Rust (lenguaje de programación) .
Un artículo que describe teoremas o conjeturas generalmente debe contener al menos:
Como muchos teoremas y conjeturas de la ciencia informática suelen enunciarse de manera informal en la literatura popular, también puede ser beneficioso proporcionar algún debate sobre conceptos erróneos o malas interpretaciones comunes del teorema o la conjetura.
Los nombres de tales cosas no se escriben con mayúscula, excepto cuando contienen un nombre propio (por ejemplo, un apellido).
Buenos ejemplos incluyen el problema de la detención y la tesis de Church-Turing .
Un artículo que describe una clase de herramientas generalmente debe contener:
Los ejemplos incluyen compilador , editor de texto y demostración automática de teoremas .
Se incluyen muestras de fuentes reales en los artículos por diversas razones, aunque las más típicas son demostrar el "aspecto" de un lenguaje en particular, proporcionar ejemplos de construcciones o características específicas del lenguaje y proporcionar ejemplos de algoritmos que no se expresan fácilmente en pseudocódigo. Si bien no hay nada inherentemente malo en incluir código de muestra, una cantidad excesiva de este puede restar valor al contenido del artículo en sí; evite escribir código de muestra a menos que contribuya significativamente a una comprensión fundamental del contenido enciclopédico.
Wikipedia no es un repositorio de código fuente . El código que no sea relevante para el contenido enciclopédico debe ser sacado de Wikipedia. WikiLibros es el proyecto Wikimedia apropiado para el código existente compatible con GFDL; en particular Wikilibros:Implementación de algoritmos. Los wikis externos LiteratePrograms y Rosetta Code son lugares apropiados para colocar nuevas implementaciones de muestra, junto con descripciones de cómo funcionan esas implementaciones. Nota importante: las implementaciones existentes en Wikipedia no pueden transferirse al wiki de LiteratePrograms porque el contenido de Wikipedia está licenciado bajo la licencia GFDL y/o CC-BY-SA , mientras que LiteratePrograms usa la licencia más liberal MIT/X11 ; volver a licenciar el código existente de GFDL/CC-BY-SA a MIT/X11 requeriría el permiso de todos los titulares de derechos de autor.
Algunas pautas generales sobre ejemplos de código:
<code>...</code>
o<syntaxhighlight lang="x" inline>
<syntaxhighlight lang="x">
o<pre>...</pre>
int principal(vacío) { printf("hola, mundo\n"); devuelve 0;}
<pre>...</pre>
, con un atributo específico lang
que especifique el nombre del idioma (el valor wikitext
se utiliza para el marcado de MediaWiki). Consulte Extension:SyntaxHighlight para conocer los idiomas admitidos. El siguiente es un código Java resaltado por sintaxis, por ejemplo, utilizando <syntaxhighlight lang="java">
:clase HolaMundo { public static void main ( String [] args ) { System . println ( " ¡Hola Mundo!" ); // Imprimir "¡Hola Mundo! " } }
No existen estándares universalmente aceptados para presentar algoritmos en Wikipedia. Un intento anterior de estandarizar un pseudocódigo está archivado en User:Dcoetzee/Wikicode , aunque "[e]l autor recomienda que no se vuelva a presentar una propuesta de este tipo, ya que es poco probable que obtenga el consentimiento". Dentro del WikiProject Computer science , el consenso general ha sido que, siempre que sea posible, los algoritmos deben presentarse en pseudocódigo. El uso de pseudocódigo es completamente independiente del lenguaje y es más NPOV con respecto a los lenguajes de programación en general. El pseudocódigo también proporciona mucha más flexibilidad con respecto al nivel de detalle de implementación, lo que permite que los algoritmos se presenten al nivel más alto que se requiera para centrarse en el algoritmo y sus ideas centrales, en lugar de en los detalles de cómo se implementa. Finalmente, el pseudocódigo de alto nivel adecuado proporciona la presentación más accesible de un algoritmo, en particular para los no programadores.
El algoritmo Ford-Fulkerson se ingresa como: Gráfico G con capacidad de flujo c , nodo fuente s , Nodo sumidero t salida: Flujo f tal que f es máximo desde s hasta t (Tenga en cuenta que f (u,v) es el flujo del nodo u al nodo v, y c (u,v) es la capacidad de flujo del nodo u al nodo v) para cada arista ( u , v ) en G E do f ( u , v ) ← 0 f ( v , u ) ← 0 mientras exista un camino p desde s hasta t en la red residual G f do sea c f la capacidad de flujo de la red residual G f c f ( p ) ← min{ c f ( u , v ) | ( u , v ) en p } para cada arista ( u , v ) en p do f ( u , v ) ← f ( u , v ) + c f ( p ) f ( v , u ) ← − f ( u , v ) devolver f
Operador | Resultado | Entidad | Ejemplo |
---|---|---|---|
Asignación | ← o := | ←, := | c ← 2πr , c := 2πr |
Comparación | =, ≠, <, >, ≤, ≥ | =, ≠, <, >, ≤, ≥ | |
Aritmética | +, −, ×, /, módulo | +, ±, ×, /, mod | |
Piso/techo | ⌊, ⌋, ⌈, ⌉ | &lpiso;, &rpiso;, ⌈, ⌉ | a ← ⌊b⌋ + ⌈c⌉ |
Lógico | y , o | '''y''', '''o''' | a ≥ b and a ≤ c |
Sumas | ∑ ∏ | ∑ ∏ | h ← ∑a∈A 1/a |
si condición entonces código ruta de lo contrario si condición entonces código ruta de lo contrario código ruta fin si
mientras que la condición hace que el código bloquee la repetición
para loop_control hacer código bloque repetir
loop_control
está cualquier cláusula adecuada para controlar un bucle for, como por ejemplo item in list
o 1 ≤ i ≤ n
etc.?función nombre_función es un bloque de código que retorna la variable fin de la función
function_name
es cualquier formato razonable de nombre de función y argumentos. Alternativamente, las entradas y salidas se pueden especificar dentro del bloque de función:función nombre_función es entrada: descripción de las entradas salida: descripción de las salidas bloque de código variable de retorno fin de función
En la página Algoritmo se ofrece un ejemplo de pseudocódigo que sigue aproximadamente estas pautas como ejemplo , y en Ordenamiento por cubos , Ordenamiento topológico y Algoritmo rho de Pollard .
: '''Entradas''' ''descripción de los argumentos de entrada'' : '''Salida''' ''descripción de las salidas'' :# ''(descripción de un paso en el algoritmo)'' :# ''(el siguiente paso en el algoritmo)'' :## ''(subpaso)'' :# ''(etc.)''
Algunos ejemplos de algoritmos en este formato incluyen el algoritmo de Buchberger , el algoritmo de Pohlig-Hellman , el algoritmo de inversión de Itoh-Tsujii , el algoritmo Baby-step giant-step y el algoritmo p − 1 de Pollard .
Es fundamental que el contenido del artículo sea verificable con fuentes confiables , una lista de referencias bien elegida y referencias a la literatura. Cualquier cita, cualquier material cuestionado o que pueda ser cuestionado y cualquier afirmación que involucre a una persona viva debe estar respaldada por una cita en línea a una fuente secundaria confiable. Algunas razones adicionales para citar fuentes de alta calidad son las siguientes:
Las fuentes primarias deben usarse con cuidado. Por lo general, se permiten para afirmaciones no controvertidas y no promocionales sobre el tema o su(s) autor(es). Ejemplos: hacer referencia a una publicación de blog del equipo de desarrollo del lenguaje de programación Rust es suficiente para un punto sobre la arquitectura interna del compilador Rust o la motivación detrás de una decisión específica sobre el diseño del lenguaje Rust. Sin embargo, dicha fuente no se puede usar para proporcionar puntos de referencia de Rust o contrastar las características de Rust con las de otro lenguaje, ya que dichas afirmaciones de los desarrolladores pueden tener un elemento promocional e involucrar análisis, evaluación, interpretación o síntesis de hechos y evidencia, lo que requiere una fuente secundaria .
Wikipedia no impone un estilo específico de referencia y cita ; simplemente utiliza uno de manera consistente dentro de un artículo en particular.